package com.likou;

import java.util.PriorityQueue;

public class q75 {

    // 双指针
    public void sortColors(int[] nums) {
        int left = 0;
        int right = nums.length - 1;
        int i = 0;

        while (i <= right) {
            int num = nums[i];
            if (num == 1) {
                i++;
            } else if (num == 0) {
                nums[i] = nums[left];
                nums[left] = num;
                left++;
                i++;
            } else {
                nums[i] = nums[right];
                nums[right] = num;
                right--;
            }
        }
    }


//    public void sortColors(int[] nums) {
//
//        int[] count = new int[3];
//        for (int num : nums) {
//            if (num == 0) {
//                count[0] += 1;
//            } else if (num == 1) {
//                count[1] += 1;
//            } else {
//                count[2] += 1;
//            }
//        }
//
//        int mark = 0;
//        for (int k = 0; k < count.length; k++) {
//            for (int i = 0; i < count[k]; i++) {
//                nums[mark] = k;
//                mark++;
//            }
//        }
//
//    }


//    public void sortColors(int[] nums) {
//        PriorityQueue<Integer> queue = new PriorityQueue<>((a, b) -> (b - a));
//
//        for (int num : nums) {
//            queue.add(num);
//        }
//
//        int size = queue.size();
//        for (int i = 0; i < size; i++) {
//            nums[i] = queue.poll();
//        }
//    }
}
